////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: ParameterParser V1.1.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  aecglobalelements.cpp
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "aecglobalelements.h"
#include "parametersetmanager.h"

AECGLOBALELEMENTS_NAMESPACE_BEGIN


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load LuxLumaTargetZoneDataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL aecglobalelementsClass::LoadLuxLumaTargetZoneDataType(
    ParameterFileSymbolTableEntry* entry,
    LuxLumaTargetZoneDataType* structure)
{
    BOOL result = TRUE;
    result = result && entry->ReadFloat(&structure->lumaTarget);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load TriggerPointType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL aecglobalelementsClass::LoadTriggerPointType(
    ParameterFileSymbolTableEntry* entry,
    TriggerPointType* structure)
{
    BOOL result = TRUE;
    result = result && entry->ReadFloat(&structure->start);
    result = result && entry->ReadFloat(&structure->end);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load LuxLumaTargetZoneType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL aecglobalelementsClass::LoadLuxLumaTargetZoneType(
    ParameterFileSymbolTableEntry* entry,
    LuxLumaTargetZoneType* structure)
{
    BOOL result = TRUE;
    result = result && LoadTriggerPointType(entry, &structure->zoneTrigger);
    result = result && LoadLuxLumaTargetZoneDataType(entry, &structure->zoneData);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load LuxLumaTargetType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL aecglobalelementsClass::LoadLuxLumaTargetType(
    ParameterFileSymbolTableEntry* entry,
    LuxLumaTargetType* structure)
{
    BOOL result = TRUE;

    // Reading structure->luxLumaTargetZone from the symbol table
    {
        result = result && entry->ReadUInt32(&structure->luxLumaTargetZoneCount);
        structure->luxLumaTargetZoneID = entry->ID;
        ParameterFileSymbolTableEntry* pointerEntry1 = entry->Table->ReadPointerEntry(entry);
        result = result && pointerEntry1 != NULL;
        if (result)
        {
            structure->luxLumaTargetZone   = PARAMETER_NEW LuxLumaTargetZoneType[structure->luxLumaTargetZoneCount];
        }
        if (!result || structure->luxLumaTargetZone == NULL)
        {
            structure->luxLumaTargetZoneCount = 0;
        }
        for (UINT32 i = 0; result && i < structure->luxLumaTargetZoneCount; i++)
        {
            result = result && LoadLuxLumaTargetZoneType(pointerEntry1, &structure->luxLumaTargetZone[i]);
        }
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load StartEndType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL aecglobalelementsClass::LoadStartEndType(
    ParameterFileSymbolTableEntry* entry,
    StartEndType* structure)
{
    BOOL result = TRUE;
    result = result && entry->ReadFloat(&structure->start);
    result = result && entry->ReadFloat(&structure->end);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load LuxFaceWeightZoneDataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL aecglobalelementsClass::LoadLuxFaceWeightZoneDataType(
    ParameterFileSymbolTableEntry* entry,
    LuxFaceWeightZoneDataType* structure)
{
    BOOL result = TRUE;
    result = result && LoadStartEndType(entry, &structure->LuxFaceWeight);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load LuxFaceWeightZoneType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL aecglobalelementsClass::LoadLuxFaceWeightZoneType(
    ParameterFileSymbolTableEntry* entry,
    LuxFaceWeightZoneType* structure)
{
    BOOL result = TRUE;
    result = result && LoadTriggerPointType(entry, &structure->zoneTrigger);
    result = result && LoadLuxFaceWeightZoneDataType(entry, &structure->zoneData);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load LuxFaceWeightType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL aecglobalelementsClass::LoadLuxFaceWeightType(
    ParameterFileSymbolTableEntry* entry,
    LuxFaceWeightType* structure)
{
    BOOL result = TRUE;

    // Reading structure->LuxFaceWeightZone from the symbol table
    {
        result = result && entry->ReadUInt32(&structure->LuxFaceWeightZoneCount);
        structure->LuxFaceWeightZoneID = entry->ID;
        ParameterFileSymbolTableEntry* pointerEntry1 = entry->Table->ReadPointerEntry(entry);
        result = result && pointerEntry1 != NULL;
        if (result)
        {
            structure->LuxFaceWeightZone   = PARAMETER_NEW LuxFaceWeightZoneType[structure->LuxFaceWeightZoneCount];
        }
        if (!result || structure->LuxFaceWeightZone == NULL)
        {
            structure->LuxFaceWeightZoneCount = 0;
        }
        for (UINT32 i = 0; result && i < structure->LuxFaceWeightZoneCount; i++)
        {
            result = result && LoadLuxFaceWeightZoneType(pointerEntry1, &structure->LuxFaceWeightZone[i]);
        }
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load FirstFrameBiasType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL aecglobalelementsClass::LoadFirstFrameBiasType(
    ParameterFileSymbolTableEntry* entry,
    FirstFrameBiasType* structure)
{
    BOOL result = TRUE;
    result = result && entry->ReadBoolean(&structure->enableStartUpBias);
    result = result && entry->ReadFloat(&structure->firstFrameStepSizeDarkMax);
    result = result && LoadStartEndType(entry, &structure->stepSizeBrightAdjRange);
    result = result && entry->ReadFloat(&structure->maxAdjFactor);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load RapidConvType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL aecglobalelementsClass::LoadRapidConvType(
    ParameterFileSymbolTableEntry* entry,
    RapidConvType* structure)
{
    BOOL result = TRUE;
    result = result && LoadFirstFrameBiasType(entry, &structure->firstFrameBias);
    result = result && entry->ReadFloat(&structure->startExpIndex);
    result = result && entry->ReadInt32(&structure->tolMultUnitStepSize);
    result = result && entry->ReadInt32(&structure->frameSkipInit);
    result = result && entry->ReadInt32(&structure->frameSkip);
    result = result && entry->ReadInt32(&structure->minSettledCount);
    result = result && entry->ReadInt32(&structure->maxFrameConvTimeOut);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load ModuleVersionType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL aecglobalelementsClass::LoadModuleVersionType(
    ParameterFileSymbolTableEntry* entry,
    ModuleVersionType* structure)
{
    BOOL result = TRUE;
    result = result && entry->ReadInt32(&structure->major_revision);
    result = result && entry->ReadInt32(&structure->minor_revision);
    result = result && entry->ReadInt32(&structure->incr_revision);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload LuxLumaTargetType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void aecglobalelementsClass::UnloadLuxLumaTargetType(
    LuxLumaTargetType* structure)
{
    PARAMETER_DELETE[] structure->luxLumaTargetZone;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload LuxFaceWeightType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void aecglobalelementsClass::UnloadLuxFaceWeightType(
    LuxFaceWeightType* structure)
{
    PARAMETER_DELETE[] structure->LuxFaceWeightZone;
}

AECGLOBALELEMENTS_NAMESPACE_END
